اجرای یک برنامه تحت Dos با نمایش خروجی آن - کدهای آماده دلفی افزایش بازدید - افزایش بازدید و ترافیک سایت شما
سفارش تبلیغ
صبا ویژن
هر دوستی ای که جز بر راه خدا استوار باشد، گمراهی است و اعتماد بر آن، محال . [امام علی علیه السلام]
کدهای آماده دلفی

از این برنامه برای اجرا کردن یک برنامه تحت Dos و برگرداندن خروجی آن به فرم شما و نمایش آن در یک Memo است.

  procedure RunDosInMemo(Que:String;EnMemo:TMemo);
  const
     CUANTOBUFFER = 2000;
  var
    Seguridades         : TSecurityAttributes;
    PaLeer,PaEscribir   : THandle;
    start               : TStartUpInfo;
    ProcessInfo         : TProcessInformation;
    Buffer              : Pchar;
    BytesRead           : DWord;
    CuandoSale          : DWord;
  begin
    with Seguridades do
    begin
      nlength              := SizeOf(TSecurityAttributes);
      binherithandle       := true;
      lpsecuritydeor := nil;
    end;
    {Creamos el pipe...}
    if Createpipe (PaLeer, PaEscribir, @Seguridades, 0) then
    begin
      Buffer  := AllocMem(CUANTOBUFFER + 1);
      FillChar(Start,Sizeof(Start),#0);
      start.cb          := SizeOf(start);
      start.hStdOutput  := PaEscribir;
      start.hStdInput   := PaLeer;
      start.dwFlags     := STARTF_USESTDHANDLES +
                           STARTF_USESHOWWINDOW;
      start.wShowWindow := SW_HIDE;
 
      if CreateProcess(nil,
         PChar(Que),
         @Seguridades,
         @Seguridades,
         true,
         NORMAL_PRIORITY_CLASS,
         nil,
         nil,
         start,
         ProcessInfo)
      then
        begin
          {Espera a que termine la ejecucion}
          repeat
            CuandoSale := WaitForSingle( ProcessInfo.hProcess,100);
            Application.ProcessMessages;
          until (CuandoSale <> WAIT_TIMEOUT);
          {Leemos la Pipe}
          repeat
            BytesRead := 0;
            {Llenamos un troncho de la pipe, igual a nuestro buffer}
            ReadFile(PaLeer,Buffer[0],CUANTOBUFFER,BytesRead,nil);
            {La convertimos en una string terminada en cero}
            Buffer[BytesRead]:= #0;
            {Convertimos caracteres DOS a ANSI}
            OemToAnsi(Buffer,Buffer);
            EnMemo.Text := EnMemo.text + String(Buffer);
          until (BytesRead < CUANTOBUFFER);
        end;
      FreeMem(Buffer);
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
      CloseHandle(PaLeer);
      CloseHandle(PaEscribir);
    end;
  end;

به عنوان مثال:

  RunDosInMemo("chkdsk.exe c:\",Memo1);



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 1:18 عصر


لیست کل یادداشت های این وبلاگ

>> بازدیدهای وبلاگ <<
بازدید امروز: 52
بازدید دیروز: 42
کل بازدید :88527

>> درباره خودم <<
کدهای آماده دلفی
محمد مقصودلو
در این وبلاگ سعی میکنم مطالب مربوط به برنامه نویسی دلفی ، پاسکال و گرافیک رایانه ای 2 بعدی و 3 بعدی را به روز کنم منتظر سوالات شما نیز هستم

>>تست سرعت تایپ<<

>> پیوندهای روزانه <<

>>فهرست موضوعی یادداشت ها<<

>>آرشیو شده ها<<

>>لوگوی وبلاگ من<<
کدهای آماده دلفی

>>لوگوی دوستان<<



>>اشتراک در خبرنامه<<
 

>>طراح قالب<<


>>ذکر روزهای هفته<<

>>جستجوگر وبلاگها<<

>>ساعت<<

>> اخبار فناوری<<

>>جدیدترین اس ام اس های اینترنت<<

>>فال حافظ<<

>>دیکشنری آنلاین<<
-

>>جک یا لطیفه<<

>>هواشناسی<<

>>تاریخ و ساعت<<
جمعه 04/4/13 ساعت 4:47 عصر